Dynamic pulse-width modulation motor control and medical device incorporating same

ABSTRACT

Apparatus are provided for motor control systems and related medical devices. In one embodiment, a control system includes a motor having a rotor, a sensor to obtain a measured displacement that is influenced by rotation of the rotor, and a control module coupled to the sensor. The control module adjusts a duty cycle for a modulated voltage applied to the motor in response to a difference between an expected displacement and the measured displacement. The expected displacement is influenced by or otherwise corresponds to a commanded rotation of the rotor.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a division of U.S. patent application Ser. No. 13/425,174, filed Mar. 20, 2012. The subject matter described here is also related to the subject matter described in U.S. patent application Ser. No. 13/425,180, and U.S. patent application Ser. No. 13/425,190, now issued U.S. Pat. No. 8,523,803.

TECHNICAL FIELD

Embodiments of the subject matter described herein relate generally to motor controls and related medical devices, and more particularly, embodiments of the subject matter relate to dynamic control of motors in fluid infusion devices using a modulated voltage.

BACKGROUND

Infusion pump devices and systems are relatively well-known in the medical arts, for use in delivering or dispensing an agent, such as insulin or another prescribed medication, to a patient. A typical infusion pump includes a pump drive system which typically includes a small motor and drive train components that convert rotational motor motion to a translational displacement of a stopper (or plunger) in a reservoir. The reservoir cooperates with tubing, a catheter and/or an infusion set to create a fluid path for carrying medication from the reservoir to the body of a user. Some fluid infusion devices also include a force sensor designed to detect and indicate a pump malfunction and/or non-delivery of the medication to the patient due to a fluid path occlusion.

Stepper motors may be used to displace the stopper by a precise amount, and thereby control the dosage administered to a user. Traditionally, a stepper motor is supplied with a direct current (DC) voltage to control and/or maintain position, and thus, the stepper motor continuously consumes power during use. Additionally, stepper motors are frequently controlled using an open-loop control scheme, where the voltage applied to the stepper motor is chosen to be large enough to ensure the stepper motor provides torque that meets or exceeds the likely maximum requirements of the system, thereby ensuring that the stepper motor achieves a number of commanded steps and obviating the need for feedback mechanisms to monitor the position. However, most infusion pump devices and other portable medical devices are battery powered, and accordingly, it is desirable to reduce the power consumption of the stepper motor and prolong battery life.

BRIEF SUMMARY

An embodiment of a motor control system is provided. The system includes a motor having a rotor, a sensor to obtain a measured displacement that is influenced by rotation of the rotor, and a control module coupled to the sensor. The control module adjusts a duty cycle for a modulated voltage applied to the motor in response to a difference between an expected displacement and the measured displacement. The expected displacement is influenced by or otherwise corresponds to a commanded rotation of the rotor.

Also provided is an embodiment of an infusion device. The infusion device includes a motor having a rotor and a shaft mechanically coupled to the rotor, wherein the shaft is displaced to deliver fluid in response to rotation of the rotor. The infusion device also includes a sensor to obtain a measured displacement that is influenced by rotation of the rotor and a control module coupled to the motor and the sensor. The control module operates the motor to provide a commanded rotation of the rotor while a modulated voltage is applied to the motor and adjusts a duty cycle for the modulated voltage in response to a difference between an expected displacement corresponding to the commanded rotation and the measured displacement obtained after operating the motor to provide the commanded rotation.

In another embodiment, a method for controlling a motor is provided. The method involves applying a modulated voltage to the motor to produce a commanded rotation of a rotor of the motor, determining an expected displacement based on the commanded rotation, obtaining a measured displacement influenced by rotation of the rotor in response to applying the modulated voltage to the motor to produce the commanded rotation, and adjusting a duty cycle of the modulated voltage in response to a difference between the expected displacement and the measured displacement.

This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the detailed description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the subject matter may be derived by referring to the detailed description and claims when considered in conjunction with the following figures, wherein like reference numbers refer to similar elements throughout the figures.

FIG. 1 depicts an exemplary embodiment of an infusion system;

FIG. 2 is a perspective view of an embodiment of a fluid infusion device suitable for use in the infusion system of FIG. 1;

FIG. 3 is a perspective view that depicts internal structure of the durable housing of the fluid infusion device shown in FIG. 2;

FIG. 4 is a perspective view of an exemplary drive system suitable for use in the durable housing of the fluid infusion device of FIGS. 2-3;

FIG. 5 is cross-sectional perspective view of the motor of motor drive system of FIG. 4 illustrating a sensor integrated therein;

FIG. 6 is a perspective view of the exemplary drive system of FIG. 4 illustrating the gear assembly engaged with a shaft;

FIG. 7 is a block diagram of an exemplary motor control system suitable for use in the fluid infusion device of FIGS. 2-3;

FIG. 8 is a flow diagram of an exemplary motor control process suitable for use with the motor control system of FIG. 7;

FIG. 9 is a flow diagram of an exemplary occlusion detection process suitable for use with the motor control system of FIG. 7 in connection with the motor control process of FIG. 8; and

FIG. 10 is a flow diagram of an exemplary degradation detection process suitable for use with the motor control system of FIG. 7 in connection with the motor control process of FIG. 8.

DETAILED DESCRIPTION

The following detailed description is merely illustrative in nature and is not intended to limit the embodiments of the subject matter or the application and uses of such embodiments. As used herein, the word “exemplary” means “serving as an example, instance, or illustration.” Any implementation described herein as exemplary is not necessarily to be construed as preferred or advantageous over other implementations. Furthermore, there is no intention to be bound by any expressed or implied theory presented in the preceding technical field, background, brief summary or the following detailed description.

Embodiments of the subject matter described herein generally relate to controlling the displacement (or rotational position) of a motor by dynamically adjusting the duty cycle of a modulated voltage, such as a pulse-width modulated voltage, that is applied the motor. In exemplary embodiments, a pulse-width modulated voltage is applied to the motor and the motor is operated to produce a commanded amount of rotation (or displacement). Based on the commanded amount of rotation, an expected displacement, either of the rotor or another element mechanically coupled to the rotor, that is expected to result from the commanded amount of rotation is determined and compared to a measured displacement obtained from a sensor after the motor is operated to produce the commanded amount of rotation. In response to a difference between the expected displacement and the measured displacement, the duty cycle of the pulse-width modulated voltage is increased and the motor is operated to compensate for the difference between the expected displacement and the measured displacement while a pulse-width modulated voltage having the increased duty cycle is applied.

In exemplary embodiments, the motor is a stepper motor or another direct current (DC) motor that is commanded to produce a particular number of motor steps, and the sensor is an incremental position sensor (e.g., a rotary encoder) that measures or otherwise detects incremental rotations of the rotor, wherein the expected displacement is the number of incremental rotations of the rotor that are expected to be detected by the incremental position sensor when the stepper motor achieves the commanded number of motor steps and the measured displacement is the actual measured number of incremental rotations identified via the incremental position sensor. However, it should be noted that the subject matter is not limited to stepper motors or incremental position sensors that detect motor rotation. For example, in some embodiments, the sensor may measure or otherwise detect the position or displacement of the shaft of a stopper (or plunger) that is mechanically coupled to the rotor of the motor, wherein the expected displacement is the displacement (or position) of the shaft (or stopper) that should result from the commanded amount of rotation of the rotor and the measured displacement (or position) is the actual measured displacement (or position) of the shaft via the sensor. As described in greater detail below, in exemplary embodiments, the duty cycle of the pulse-width modulated voltage is monitored during operation of the motor to detect an anomalous condition, such as an occlusion condition or a degradation condition, based on the duty cycle. In this regard, when changes in the duty cycle are indicative of an anomalous condition, a notification is generated to alert a user or a supervisory control system of the potential anomaly.

While the subject matter described herein can be implemented in any electronic device that includes a motor, exemplary embodiments described below are implemented in the form of medical devices, such as portable electronic medical devices. Although many different applications are possible, the following description focuses on a fluid infusion device (or infusion pump) as part of an infusion system deployment. For the sake of brevity, conventional techniques related to infusion system operation, insulin pump and/or infusion set operation, and other functional aspects of the systems (and the individual operating components of the systems) may not be described in detail here. Examples of infusion pumps may be of the type described in, but not limited to, U.S. Pat. Nos. 4,562,751; 4,685,903; 5,080,653; 5,505,709; 5,097,122; 6,485,465; 6,554,798; 6,558,320; 6,558,351; 6,641,533; 6,659,980; 6,752,787; 6,817,990; 6,932,584; and 7,621,893 which are herein incorporated by reference.

Turning now to FIG. 1, in exemplary embodiments, an infusion system 100 includes, without limitation, a fluid infusion device (or infusion pump) 102, a sensing arrangement 104, a command control device (CCD) 106, and a computer 108. The components of an infusion system may be realized using different platforms, designs, and configurations, and the embodiment shown in FIG. 1 is not exhaustive or limiting. In practice, the infusion device 102 and the sensing arrangement 104 are secured at desired locations on the body of a user (or patient), as illustrated in FIG. 1. In this regard, the locations at which the infusion device 102 and the sensing arrangement 104 are secured to the body of the user in FIG. 1 are provided only as a representative, non-limiting, example. The elements of the infusion system 100 may be similar to those described in U.S. patent application Ser. No. 13/049,803, assigned to the assignee of the present application, the subject matter of which is hereby incorporated by reference in its entirety.

In the illustrated embodiment of FIG. 1, the infusion device 102 is designed as a portable medical device suitable for infusing a fluid, a liquid, a gel, or other agent into the body of a user. In exemplary embodiments, the infused fluid is insulin, although many other fluids may be administered through infusion such as, but not limited to, HIV drugs, drugs to treat pulmonary hypertension, iron chelation drugs, pain medications, anti-cancer treatments, medications, vitamins, hormones, or the like. In some embodiments, the fluid may include a nutritional supplement, a dye, a tracing medium, a saline medium, a hydration medium, or the like. The sensing arrangement 104 generally represents the components of the infusion system 100 configured to sense a condition of the user, and may include a sensor, a monitor, or the like, for providing data indicative of the condition that is sensed and/or monitored by the sensing arrangement. In this regard, the sensing arrangement 104 may include electronics and enzymes reactive to a biological condition, such as a blood glucose level, or the like, of the user, and provide data indicative of the blood glucose level to the infusion device 102, the CCD 106 and/or the computer 108. For example, the infusion device 102, the CCD 106 and/or the computer 108 may include a display for presenting information or data to the user based on the sensor data received from the sensing arrangement 104, such as, for example, a current glucose level of the user, a graph or chart of the user's glucose level versus time, device status indicators, alert messages, or the like. In other embodiments, the infusion device 102, the CCD 106 and/or the computer 108 may include electronics and software that are configured to analyze sensor data and operate the infusion device 102 to deliver fluid to the body of the user based on the sensor data and/or preprogrammed delivery routines. Thus, in exemplary embodiments, one or more of the infusion device 102, the sensing arrangement 104, the CCD 106, and/or the computer 108 includes a transmitter, a receiver, and/or other transceiver electronics that allow for communication with other components of the infusion system 100, so that the sensing arrangement 104 may transmit sensor data or monitor data to one or more of the infusion device 102, the CCD 106 and/or the computer 108. In various embodiments, the sensing arrangement 104 may be secured to the body of the user or embedded in the body of the user at a location that is remote from the location at which the infusion device 102 is secured to the body of the user. In various other embodiments, the sensing arrangement 104 may be incorporated within the infusion device 102. In other embodiments, the sensing arrangement 104 may be separate and apart from the infusion device 102, and may be, for example, part of the CCD 106. In such embodiments, the sensing arrangement 104 may be configured to receive a biological sample, analyte, or the like, to measure a condition of the user.

As described above, in various embodiments, the CCD 106 and/or the computer 108 include electronics and other components configured to perform processing, delivery routine storage, and to control the infusion device 102 in a manner that is influenced by sensor data measured by and/or received from the sensing arrangement 104. By including control functions in the CCD 106 and/or the computer 108, the infusion device 102 may be made with more simplified electronics. However, in other embodiments, the infusion device 102 may include all control functions, and may operate without the CCD 106 and/or the computer 108. In various embodiments, the CCD 106 may be a portable electronic device. In addition, in various embodiments, the infusion device 102 and/or the sensing arrangement 104 may be configured to transmit data to the CCD 106 and/or the computer 108 for display or processing of the data by the CCD 106 and/or the computer 108.

In some embodiments, the CCD 106 and/or the computer 108 may provide information to the user that facilitates the user's subsequent use of the infusion device 102. For example, the CCD 106 may provide information to the user to allow the user to determine the rate or dose of medication to be administered into the user's body. In other embodiments, the CCD 106 may provide information to the infusion device 102 to autonomously control the rate or dose of medication administered into the body of the user. In some embodiments, the sensing arrangement 104 may be integrated into the CCD 106. Such embodiments may allow the user to monitor a condition by providing, for example, a sample of his or her blood to the sensing arrangement 104 to assess his or her condition. In some embodiments, the sensing arrangement 104 and the CCD 106 may be for determining glucose levels in the blood and/or body fluids of the user without the use of, or necessity of, a wire or cable connection between the infusion device 102 and the sensing arrangement 104 and/or the CCD 106.

In some embodiments, the sensing arrangement 104 and/or the infusion device 102 may utilize a closed-loop system for delivering fluid to the user. Examples of sensing devices and/or infusion pumps utilizing closed-loop systems may be found at, but are not limited to, the following U.S. Pat. Nos. 6,088,608, 6,119,028, 6,589,229, 6,740,072, 6,827,702, and 7,323,142, all of which are incorporated herein by reference in their entirety. In such embodiments, the sensing arrangement 104 is configured to sense a condition of the user, such as, blood glucose level or the like. The infusion device 102 may be configured to deliver fluid in response to the condition sensed by the sensing arrangement 104. In turn, the sensing arrangement 104 may continue to sense a new condition of the user, allowing the infusion device 102 to deliver fluid continuously in response to the new condition sensed by the sensing arrangement 104 indefinitely. In some embodiments, the sensing arrangement 104 and/or the infusion device 102 may be configured to utilize the closed-loop system only for a portion of the day, for example only when the user is asleep or awake.

Referring now to FIGS. 2-3, in an exemplary embodiment, the infusion device 102 in the infusion system 100 of FIG. 1 is realized as fluid infusion device 200. FIGS. 2-3 depict perspective views of the fluid infusion device 200, which includes a durable housing 202 and a base plate 204. While FIG. 2 depicts the durable housing 202 and the base plate 204 as being coupled together, in practice, the durable housing 202 and/or the base plate 204 may include features, structures, or elements to facilitate removable coupling (e.g., pawls, latches, rails, slots, keyways, buttons, or the like) and accommodate a removable/replaceable fluid reservoir 206. As illustrated in FIG. 3, in exemplary embodiments, the fluid reservoir 206 mates with, and is received by, the durable housing 202. In alternate embodiments, the fluid reservoir 206 mates with, and is received by, the base plate 204.

In exemplary embodiments, the base plate 204 is temporarily adhered to the skin of the user, as illustrated in FIG. 1 using, for example, an adhesive layer of material. After the base plate is affixed to the skin of the user, a suitably configured insertion device or apparatus may be used to insert a fluid delivery needle or cannula 208 into the body of the user. The cannula 208 functions as one part of the fluid delivery path associated with the fluid infusion device 200. The durable housing 202 receives the fluid reservoir 206 and retains the fluid reservoir 206 in a substantially fixed position and orientation while the durable housing 202 and the base plate 204 are coupled. The durable housing 202 is configured to secure to the base plate 204 in a specified orientation to engage the fluid reservoir 206 with a reservoir port receptacle formed in the durable housing 202. In particular embodiments, the fluid infusion device 200 includes certain features to orient, align, and position the durable housing 202 relative to the base plate 204 such that when the two components are coupled together, the fluid reservoir 206 is urged into the reservoir port receptacle to engage a sealing assembly and establish a fluid seal, as described in more detail below.

In exemplary embodiments, the fluid reservoir 206 includes a fluid delivery port 210 that cooperates with the reservoir port receptacle. The fluid delivery port 210 may include a pierceable septum if the fluid reservoir 206 is a prefilled unit. Alternatively, the fluid delivery port 210 may include a vented opening to accommodate filling of the fluid reservoir 206 by the patient, a doctor, a caregiver, or the like. The fluid delivery port 210 has an interior 211 defined therein that is shaped, sized, and otherwise configured to receive a sealing element when the fluid reservoir 206 is engaged with the reservoir port receptacle. The sealing element forms part of a sealing assembly for the fluid infusion device 200. In this regard, the sealing assembly includes one or more sealing elements and/or fluid delivery needles configured to establish fluid communication from the interior of the reservoir 206 to the cannula 208 via the fluid delivery port 210 and a mounting cap 212, and thereby establish a fluid delivery path from the reservoir 206 to the user via the cannula 208.

As illustrated in FIG. 3, the fluid reservoir 206 includes a reservoir barrel 220 that contains the fluid and a stopper 222 (or plunger) positioned to push fluid from inside the barrel 220 of the reservoir 206 along the fluid path through the cannula 208 to the user. The stopper 222 includes a shaft 224 having exposed teeth 225 that are configured to mechanically couple or otherwise engage the shaft 224 of the stopper 222 with a drive system 230 contained in the durable housing 202. In exemplary embodiments, the drive system 230 includes a motor 232 having a rotor that is mechanically coupled to a gear assembly that translates rotation of the rotor of the motor 232 to translational displacement the stopper 222 in the direction 250 of the fluid delivery port 210. In this regard, in exemplary embodiments, the rotor of the motor 232 is mechanically coupled to a rotary shaft, which, in turn, engages a gear assembly 236 that includes a pinion gear 238 having exposed teeth 239 configured to mate with or otherwise engage the teeth 225 of the shaft 224. The rotary shaft translates rotation (or displacement) of the rotor of the motor 232 into a corresponding rotation (or displacement) of the gear assembly 236 such that the exposed teeth 239 of the pinion gear 238 to apply force to the exposed teeth 225 of the shaft 224 of the stopper 222 in the direction 250 of the fluid delivery port 210 to thereby displace the stopper 222 in the direction 250 of the fluid delivery port 210 and dispense, expel, or otherwise deliver fluid from the barrel 220 of the reservoir 206 to the user via the fluid delivery path provided by the cannula 208. In exemplary embodiments, the motor 232 is realized as a DC motor, such as a stepper motor or brushless DC motor capable of precisely controlling the amount of displacement of the stopper 222 during operation of the infusion device 200, as described in greater detail below.

Referring now to FIGS. 4-6, in accordance with one or more embodiments, the drive system 230 in the durable housing 202 of the fluid infusion device 200 is realized as drive system 400. In this regard, FIG. 5 depicts a cross-sectional perspective view of the motor 402 of the drive system 400 and FIG. 6 depicts a perspective view of the drive system 400 engaged with a shaft 624, such as the shaft 224 coupled to the stopper 222 of a reservoir 206 in the fluid infusion device 200. Various aspects of the motor drive system 400 may be similar to those described in U.S. patent application Ser. No. 13/049,803. The illustrated drive system 400 includes a motor 402 (e.g., motor 232) and a gear assembly 406 (e.g., gear assembly 236). As described above, the drive system 400 includes a rotary shaft 404 that is mechanically coupled to the rotor 501 of the motor 402. The rotary shaft 404 is mechanically coupled to a first gear 408 of the gear assembly 406. In the illustrated embodiment, the first gear 408 is coaxial and/or concentric to and disposed about the rotary shaft 404, and the first gear 408 is affixed to or otherwise integrated with the rotary shaft 404 such that the first gear 408 and the rotary shaft 404 rotate in unison. The gear assembly 406 includes a second gear 610 (e.g., pinion gear 238) having teeth 612 that are configured to mate with the exposed teeth 625 on a shaft 624 (e.g., teeth 225 on the shaft 224 of the stopper 222), such that rotation or displacement of the second gear 610 produces a corresponding linear displacement of the shaft 624, as described above. In exemplary embodiments, the gear assembly 406 includes various additional gears and other drive train components (e.g., screws, cams, ratchets, jacks, pulleys, pawls, clamps, nuts, slides, bearings, levers, beams, stoppers, plungers, sliders, brackets, guides, bearings, supports, bellows, caps, diaphragms, bags, heaters, and the like) configured to mechanically couple the gears 408, 610 so that rotation (or displacement) of the first gear 408 produces a corresponding rotation (or displacement) of the second gear 610. Thus, during operation of the fluid infusion device 200, when the motor 402 is operated to rotate the rotor 501 of the motor 402, the rotary shaft 404 rotates in unison with the rotor 501 to cause a corresponding rotation of the first gear 408, which, in turn, actuates the gears of the gear assembly 406 to produce a corresponding rotation or displacement of the second gear 610, which, in turn, displaces the shaft 624 (e.g., shaft 224) in a linear direction (e.g., direction 250).

Referring to FIG. 5, in an exemplary embodiment, a sensor 500 is configured to measure, sense, or otherwise detect rotation (or displacement) of the rotary shaft 404 and/or the rotor 501 of the motor 402. In exemplary embodiments, the rotary shaft 404 includes a detectable feature that is measurable or otherwise detectable by the sensor 500. In the illustrated embodiment, a rotary member (or wheel) 502 is provided on the rotary shaft 404 and includes a plurality of protruding features (or arms) 504 that are measurable or otherwise detectable by the sensor 500. In the illustrated embodiment, the wheel 502 is coaxial and/or concentric to and disposed about the rotary shaft 404, and the wheel 502 is affixed to or otherwise integrated with the rotary shaft 404 such that the wheel 502 and the rotary shaft 404 rotate in unison. In this manner, rotation (or displacement) of the wheel 502 corresponds to the displacement of the rotary shaft 404 and/or the rotor 501 of the motor 402.

In exemplary embodiments, the sensor 500 is realized as an incremental position sensor configured to measure, sense, or otherwise detect incremental rotations of the rotary shaft 404 and/or the rotor 501 of the motor 402. For example, in accordance with one or more embodiments, the sensor 500 is realized as a rotary encoder. In alternative embodiments, the sensor 500 may be realized using any other suitable sensor, such as (but not limited to) a magnetic sensor, optical sensor (or other light detector), tactile sensor, capacitive sensor, inductive sensor, and/or the like. In exemplary embodiments, the incremental position sensor 500 may be configured to count or otherwise sense incremental rotations of the motor 402 via the wheel 502, for example, by counting each time a protruding feature 504 passes by the sensor 500. In this regard, when the number of protruding features 504 equals or otherwise corresponds to the number of discrete motor steps of the stepper motor 402, the incremental position sensor 500 counts or otherwise senses the number of motor steps traversed by the rotary shaft 404 and/or rotor of the motor 402. In some embodiments, the sensor 500 includes an emitter 510 and a detector 512 disposed on opposite sides of the wheel 502 such that at least a portion of the protruding features 504 passes between the emitter 510 and the detector 512 as the wheel 502 rotates. In this regard, the sensor 500 may detect or otherwise count each instance when a protruding feature 504 interrupts a transmission from the emitter 510 to the detector 512. Alternatively, the sensor 500 may detect or otherwise count each instance a transmission from the emitter 510 to the detector 512 is uninterrupted or otherwise completed (e.g., via gaps between protruding features 504).

FIG. 7 depicts an exemplary embodiment of a motor control system 700 suitable for use in a fluid infusion device in an infusion system, such as infusion device 200 or infusion device 102 in the infusion system 100. The illustrated motor control system 700 includes, without limitation, a motor control module 702, a pulse-width modulation (PWM) module 704, a motor driver module 706, a motor 708 (e.g., motor 232, 402), and a position sensor 710 (e.g., sensor 500). In exemplary embodiments, the motor control system 700 is suitably configured to operate the motor 708 to provide a desired amount of fluid to a user in response to a dosage command indicative of the desired amount of fluid to be delivered that is received from a pump control module 720, as described in greater detail below. In this regard, the pump control module 720 generally represents the electronics and other components of the infusion system that process sensor data (e.g., from sensing arrangement 104) pertaining to a condition of the user and control operation of the fluid infusion device according to a desired infusion delivery program in a manner that is influenced by sensor data measured by and/or received from the sensing arrangement 104 or otherwise dictated by the user. In practice, the features and/or functionality of the pump control module 720 may be implemented by control electronics located in the fluid infusion device 102, 200, the CCD 106 and/or the computer 108. It should be understood that FIG. 7 is a simplified representation of the system 700 for purposes of explanation and is not intended to limit the subject matter described herein in any way. For example, in practice, the features and/or functionality of the motor control module 702 may implemented by or otherwise integrated into the pump control module 720, or vice versa.

In the illustrated embodiment, the PWM module 704 generally represents the combination of circuitry, hardware and/or other electrical components configured to generate a pulse-width modulated voltage output applied to the motor 708 via the motor driver module 706. In an exemplary embodiment, the PWM module 704 is coupled to an energy source 730, such as a battery housed within the infusion device 200 (e.g., in the housing 202), to receive a supply voltage. Based on a duty cycle setting for the PWM module 704, the PWM module 704 generates or otherwise produces a pulse-width modulated voltage output that oscillates between the supply voltage provided by the energy source 730 and a ground (or reference) voltage over a time interval (e.g., the PWM period), wherein the pulse-width modulated voltage output is equal to the supply voltage for a percentage of the time interval corresponding to the duty cycle setting. For example, if the supply voltage provided by the energy source 730 is equal to five volts and the duty cycle setting is equal to 30%, then the pulse-width modulated voltage output generated by the PWM module 704 may be a square wave having a magnitude equal to five volts for 30% of the time interval and zero volts for the remaining 70% of the time interval. In this regard, the duty cycle setting corresponds to the width of a portion of the square wave (e.g., the portion corresponding the supply voltage), and accordingly, the duty cycle setting may alternatively be referred to herein as the PWM width setting. In an exemplary embodiment, the frequency of the pulse-width modulated voltage output (e.g., the inverse of the PWM period) is greater than the frequency of the motor driver module 706, as described in greater detail below, and the frequency of the pulse-width modulated voltage output is typically greater than the electrical time constant of the motor coils. As described in greater detail below, in exemplary embodiments, the PWM module 704 is coupled to the motor control module 702 which is configured to adjust, modify, or otherwise control the duty cycle setting of the PWM module 704.

In an exemplary embodiment, the motor 708 is a stepper motor or brushless DC motor having a toothed rotor and a number of sets of windings, wherein the number of teeth on the rotor along with the number of winding sets and the physical arrangement of the winding sets with respect to the rotor teeth provides a finite number of motor steps within a revolution of the rotor. In this regard, as used herein, a “motor step” or any variant thereof should be understood as referring to an incremental rotation of the rotor of the motor 708 that is dictated by the number of teeth of the rotor along with the number and/or arrangement of the winding sets. As described above, in an exemplary infusion pump embodiment, the rotor of the motor 708 is mechanically coupled to a gear assembly 740 (e.g., gear assembly 236, 406) that includes the gears or other drive train components of the infusion device, such that an incremental rotation of the rotor by one motor step produces a corresponding amount of displacement of a stopper 750 (e.g., stopper 222) into a reservoir (e.g., reservoir 206) to deliver fluid (e.g., insulin) to the body of a user.

The motor driver module 706 generally represents the combination of circuitry, hardware and/or other electrical components configured to sequentially apply a voltage provided at a supply voltage input of the motor driver module 706 to one or more sets of windings of the motor 708 in a particular order to produce a corresponding number of commanded motor steps of rotation by the motor 708. In the illustrated embodiment, the supply voltage input of the motor driver module 706 is coupled to the output of the PWM module 704, such that the motor driver module 706 provides the pulse-width modulated voltage from the PWM module 704 to the one or more sets of windings of the motor 708 in a particular order under control of the motor control module 702. In this regard, in some embodiments, the motor driver module 706 is coupled to the motor control module 702 to receive a commanded number of motor steps from the motor control module 702, wherein in response to the commanded number of motor steps, the motor driver module 706 sequentially applies the pulse-width modulated voltage from the PWM module 704 to the sets of windings of the motor 708 in the appropriate order to produce the commanded number of motor steps. In other embodiments, the motor control module 702 may operate the switches and/or other circuitry of the motor driver module 706 to produce the commanded number of motor steps. The frequency at which the motor driver module 706 is operated (e.g., the frequency at which the pulse-width modulated voltage is changed from being applied to one winding set to another winding set) is less than the frequency of the pulse-width modulated voltage output from the PWM module 704, such that the pulse-width modulated voltage output oscillates between the supply voltage and the ground voltage multiple times over the time period (e.g., the inverse of the motor driver frequency) during which the pulse-width modulated voltage output is applied to a particular set of windings of the motor 708.

In an exemplary embodiment, the position sensor 710 is realized as an incremental position sensor, such as a rotary encoder, that is configured to sense, measure, or otherwise detect an incremental rotation of the rotor of the motor 708, in a similar manner as described above in the context of FIG. 5. In exemplary embodiments, the resolution of the position sensor 710 is greater than or equal to the resolution of the motor 708, that is, the number of discrete incremental rotations measurable by the position sensor 710 over one revolution of the rotor of the motor 708 (e.g., the number of detectable features 504) is greater than or equal to the number of discrete motor steps over one revolution of the rotor of the motor 708. The output of the position sensor 710 is coupled to the motor control module 702 to provide dynamic closed-loop PWM control of the motor 708, as described in greater detail below.

Still referring to FIG. 7, the motor control module 702 generally represents the hardware, software, firmware and/or combination thereof that is configured to receive or otherwise obtain a commanded dosage from the pump control module 720, convert the commanded dosage to a commanded number of motor steps, and command, signal, or otherwise operate the motor driver module 706 to cause the motor 708 to produce the commanded number of motor steps. As described in greater detail below in the context of FIG. 8, in exemplary embodiments, the motor control module 702 determines an expected number of incremental rotations of the motor 708 based on the commanded number of motor steps, obtains the measured number of incremental rotations of the rotor of the motor 708 from the position sensor 710, and based on differences between the measured number and the expected number, modifies or otherwise adjusts the PWM width setting of the PWM module 704 to achieve the commanded number of motor steps. Depending on the embodiment, the motor control module 702 may be implemented or realized with a general purpose processor, a microprocessor, a controller, a microcontroller, a state machine, a content addressable memory, an application specific integrated circuit, a field programmable gate array, any suitable programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof, designed to perform the functions described herein. Furthermore, the steps of a method or algorithm described in connection with the embodiments disclosed herein may be embodied directly in hardware, in firmware, in a software module executed by the motor control module 702, or in any practical combination thereof. In exemplary embodiments, the motor control module 702 includes or otherwise accesses a memory, including any sort of random access memory (RAM), read only memory (ROM), flash memory, registers, hard disks, removable disks, magnetic or optical mass storage, or any other short or long term storage media or other non-transitory computer-readable medium, which is capable of storing programming instructions for execution by the motor control module 702. The computer-executable programming instructions, when read and executed by the motor control module 702, cause the motor control module 702 to perform the tasks, operations, functions, and processes described in greater detail below.

FIG. 8 depicts an exemplary motor control process 800 suitable for implementation by a motor control system 700 to deliver fluid to a user using dynamic closed-loop PWM control. The various tasks performed in connection with the motor control process 800 may be performed by software, hardware, firmware, or any combination thereof. For illustrative purposes, the following description refers to elements mentioned above in connection with FIG. 7. In practice, portions of the motor control process 800 may be performed by different elements of the motor control system 700, such as, for example, the motor control module 702, the PWM module 704, the motor driver module 706, the motor 708 and/or the position sensor 710. It should be appreciated that the motor control process 800 may include any number of additional or alternative tasks, the tasks need not be performed in the illustrated order and/or the tasks may be performed concurrently, and/or the motor control process 800 may be incorporated into a more comprehensive procedure or process having additional functionality not described in detail herein. Moreover, one or more of the tasks shown and described in the context of FIG. 8 could be omitted from a practical embodiment of the motor control process 800 as long as the intended overall functionality remains intact.

Referring to FIG. 8, and with continued reference to FIG. 7, the motor control process 800 begins by determining an initial duty cycle setting and configuring the PWM module to implement that initial duty setting (task 802). In an exemplary embodiment, the initial duty cycle setting is a minimum duty cycle capable of rotating the rotor of the motor 708 by one motor step. In this regard, in some embodiments, the motor control module 702 may calibrate or otherwise determine the initial duty cycle setting upon initialization of the infusion pump. For example, upon powering on the infusion pump and/or a reservoir being inserted into the infusion pump, the motor control module 702 may perform a calibration routine by initially setting the duty cycle setting of the PWM module 704 to a minimum value capable of being implemented by the PWM module 704, signaling or otherwise commanding the motor driver module 706 to provide one motor step of rotation, and monitoring the output of the position sensor 710 to determine if the rotor of the motor 708 rotated by a motor step. If the motor 708 did not rotate by a motor step, the motor control module 702 incrementally increases the duty cycle setting of the PWM module 704, repeats the steps of commanding the motor driver module 706 to provide one motor step of rotation and monitoring the output of the position sensor 710 until determining that the rotor of the motor 708 has rotated by a motor step. Once the motor 708 rotates by one motor step, the motor control module 702 maintains the duty cycle setting of the PWM module 704 at the duty cycle that resulted in a motor step of rotation. In other embodiments, the motor control system 700 may be pre-calibrated with an initial PWM width setting that is stored or otherwise maintained by the motor control module 702 for configuring the PWM module 704 upon initialization of the infusion pump and/or the motor control process 800. For example, if the PWM module 704 has a minimum duty cycle setting (e.g., 20%), the motor control module 702 may default the duty cycle setting of the PWM module 704 to the minimum duty cycle capable of being implemented by the PWM module 704.

After configuring the PWM module with an initial duty cycle setting, the motor control process 800 continues by receiving or otherwise obtaining a motor command corresponding to a desired displacement of a stopper or a desired amount of rotation to be provided by the motor (task 804). For example, the pump control module 720 may determine or otherwise receive (e.g., from the CCD 106 and/or the computer 108) a dose (or bolus) of fluid to be provided to the user based on a sensed condition of the user (e.g., a blood glucose level). In some embodiments, the pump control module 720 converts the amount of fluid to be provided to the user into a commanded displacement of the stopper 750, converts the commanded displacement of the stopper 750 to a corresponding number of motor steps, and provides that commanded number of motor steps to the motor control module 702. In other embodiments, the pump control module 720 provides the amount of fluid to be provided to the user to the motor control module 702, wherein the motor control module 702 converts the commanded dosage into a corresponding number of commanded motor steps based on the amount of displacement of the stopper 750 corresponding to that amount of fluid.

In accordance with one or more embodiments, the motor control process 800 continues by dividing or otherwise converting the number of commanded motor steps into a number of step command blocks (task 806). In this regard, in some embodiments, the step command blocks have a fixed number of steps, wherein when the number of commanded motor steps is greater than the fixed number of steps, the motor step command is broken up into smaller command blocks to decrease the response time when the motor 708 fails to achieve a commanded number of motor steps, as described in greater detail below. For example, if the total number of commanded motor steps corresponding to the desired dosage is equal to one hundred motor steps, the motor control module 702 may divide the commanded motor steps into ten different step command blocks of ten motor steps.

In an exemplary embodiment, the motor control process 800 continues by commanding or otherwise signaling the motor driver module to operate the motor in a manner intended to produce the commanded number of motor steps in a step command block with the current PWM width setting (task 808). In this regard, the motor control module 702 signals, commands, instructs, or otherwise operates the motor driver module 706 to sequentially apply the pulse-width modulated voltage output of the PWM module 704 to the various sets of windings of the motor 708 in the appropriate order to cause rotor of the motor 708 rotate by the number of motor steps in the step command block. For example, the motor control module 702 may command the motor driver module 706 to implement ten motor steps, wherein in response, the motor driver module 706 changes which set of windings of the motor 708 that the pulse-width modulated voltage output of the PWM module 704 is applied to ten different times in an order or sequence intended to produce ten motor steps of rotation from the current position of the rotor. As described above, the motor driver module 706 applies the pulse-width modulated voltage output from the PWM module 704 to a first set of windings of the motor 708 for a first time period substantially equal to the inverse of the motor driver module frequency to produce a first motor step of rotation from a current position of the rotor of the motor 708, then applies the pulse-width modulated voltage output from the PWM module 704 to a second set of windings of the motor 708 for another time period substantially equal to the inverse of the motor driver module frequency to produce another motor step of rotation from the updated position of the rotor, and so on until reaching the commanded number of steps in the step command block.

In an exemplary embodiment, the motor control process 800 continues by calculating or otherwise determining an expected displacement of the rotor of the motor or another element mechanically coupled to the rotor (e.g., the stopper) after execution of the step command block based on the commanded number of motor steps in the step command block (task 810). The expected displacement is the amount by which the rotor of the motor 708 is expected to have rotated when the commanded rotation is achieved. To put it another way, the expected displacement corresponds to the amount of displacement of the rotor of the motor 708 that is expected to be measured or detected by the position sensor 710 in response to the commanded rotation. For example, when the position sensor 710 is a rotary encoder or another incremental position sensor, the motor control module 702 calculates or otherwise determines a number of rotational increments that would be expected to be measured or otherwise detected by the position sensor 710 after execution of the step command block based on the number of motor steps in the step command block and the relationship between the resolution of the position sensor 710 with respect to the resolution of the motor 708. In this regard, the expected number of measured rotational increments after execution of a step command block, n_(E), is equal to

${n_{C} \times \frac{r_{P}}{r_{M}}},$

where n_(C) is the number of motor steps in the step command block, r_(P) is the number of discrete rotational increments detectable by the position sensor 710 over a revolution of the rotor of the motor 708, and r_(M) is the number of discrete motor steps (or discrete rotational increments) for the rotor of the motor 708 over one revolution. Thus, when the number of discrete rotational increments detectable by the position sensor 710 is equal to the number of possible motor steps over a revolution of the motor 708, the expected number of measured rotational increments is equal to the commanded number of motor steps in the step command block.

Still referring to FIG. 8, the motor control process 800 continues by obtaining a measured displacement of the rotor of the motor or another element mechanically coupled to the rotor (e.g., the stopper) after executing the step command block (task 812). In this regard, after commanding the motor driver module 706, the motor control module 702 waits for an amount of time required to implement the step command block before obtaining the position of the rotor of the motor 708 from the position sensor 710. For example, the motor control module 702 may calculate the amount of time required by the motor driver module 706 to implement the step command block by multiplying the number of motor steps in the step command block by the inverse of the motor driver frequency (e.g., the amount of time a pulse-width modulated voltage is applied to produce an individual motor step). When the position sensor 710 is a rotary encoder or another incremental position sensor, the motor control module 702 obtains an initial position of the rotor of the motor 708 from the position sensor 710 (e.g., an initial encoder count) prior to commanding the motor driver module 706 to implement a step command block, obtains a subsequent position of the rotor of the motor 708 from the position sensor 710 (e.g., a subsequent encoder count) after commanding the motor driver module 706 to implement the step command block, and calculates or otherwise determines the measured number of rotational increments as a difference between positions obtained from the position sensor 710 (e.g., by subtracting the initial encoder count from the subsequent encoder count).

In exemplary embodiments, the motor control process 800 identifies or otherwise determines whether the motor has achieved the commanded amount of rotation (task 814). In some embodiments, the motor control module 702 determines that the motor has failed to achieve the commanded amount of rotation when a difference between the expected displacement and the measured displacement exceeds a threshold value. The threshold value is indicative of the number of motor steps of rotation actually achieved by the motor 708 being less than the commanded number of motor steps in the step command block. For example, when the number of discrete rotational increments detectable by the position sensor 710 is equal to the number of possible motor steps over a revolution of the motor 708, the threshold value may be equal to zero. Thus, in such an embodiment, when the expected number of measured rotational increments is greater than the measured number of rotational increments, the motor control module 702 identifies that the motor 708 did not achieve the commanded number of motor steps. In other embodiments where the resolution of the position sensor 710 is greater than the resolution of the stepper motor, the threshold value is chosen to be greater than zero to account for differences between the expected number and the measured number of rotational increments that could be attributable to noise, vibration, or other physical variations and/or misalignment between the position sensor 710 and the rotor teeth and/or positions of the windings sets of the motor 708. For example, if the number of discrete rotational increments detectable by the position sensor 710 over a revolution of the motor 708 is equal to five times the number of motor steps over one revolution, the threshold value may be chosen to be equal to two, such that when the expected number of measured rotational increments is greater than the measured number of rotational increments by more than two, the motor control module 702 identifies that the motor 708 did not achieve the commanded number of motor steps.

In response to identifying that the motor did not achieve the commanded rotation, the motor control process 800 continues by calculating or otherwise determining an amount by which the duty cycle of the PWM module should be increased and increasing or otherwise adjusting the duty cycle setting for the PWM module (tasks 816, 818). In some embodiments, the motor control module 702 calculates an amount by which to increase the PWM width setting based on the difference between the expected displacement and the measured displacement of the motor 708. For example, the motor control module 702 may increase the duty cycle setting of the PWM module 704 by a first amount if the difference between the expected displacement and the measured displacement of the motor 708 corresponds to one missed motor step, increase the duty cycle setting by a greater amount if the difference between the expected displacement and the measured displacement of the motor 708 corresponds to two missed motor steps, and so on. In this regard, the amount of increase to the PWM width setting may correspond to the difference between the expected displacement and the measured displacement of the motor 708. In other embodiments, the motor control module 702 may increase the duty cycle setting by a fixed amount (e.g., a fixed percentage or a percentage of the current duty cycle) regardless of the difference between the expected displacement and the measured displacement of the motor 708. For example, the motor control module 702 may increase the duty cycle setting of the PWM module 704 by 5% each time the motor achieves a number of motor steps that was less than the commanded number of motor steps. After the motor control module 702 identifies or otherwise determines the amount by which to increase the PWM width setting for the PWM module 704, the motor control module 702 determines an updated PWM width setting (e.g., a sum of the previous duty cycle and the amount of increase) for the PWM module 704 and configures the PWM module 704 to implement the updated PWM width setting. For example, if the initial PWM width setting corresponds to a 30% duty cycle and the motor control module 702 determines that the PWM width setting should be increased by 5% based on the difference between the expected number of measured rotational increments and the actual measured number of rotational increments, the motor control module 702 configures or otherwise instructs the PWM module 704 to implement a 35% duty cycle.

In an exemplary embodiment, the motor control process 800 determines the number of missed motor steps based on the measured displacement and modifies the number of motor steps in a subsequent step command block to compensate for the number of missed motor steps (tasks 820, 822). In accordance with one or more embodiments, the motor control module 702 adds a number of motor steps that corresponds to the difference between the expected displacement and the measured displacement to the commanded number of motor steps in the next step command block. In some embodiments, the motor control module 702 may calculate or otherwise determine the actual number of motor steps produced by the motor 708 based on the measured displacement of the rotor and determine the missed motor steps as the difference between the commanded number of motor steps and the actual number of motor steps. For example, when the position sensor 710 is a rotary encoder or another incremental position sensor, the motor control module 702 may convert the measured number of incremental rotations to a number of motor steps and subtract that number of motor steps from the commanded number of motor steps to obtain the missed motor steps. The measured number of incremental rotations may be converted motor steps by multiplying the measured number incremental rotations by

$\frac{r_{M}}{r_{p}},$

where r_(P) is the number of discrete rotational increments per revolution detectable by the position sensor 710 and r_(M) the number of motor steps per revolution. Alternatively, the motor control module 702 may determine the missed motor steps by converting the difference between the expected number of measured incremental rotations and the actual measured number of incremental rotations to a number of motor steps (e.g., by multiplying the difference by

$\left. \frac{r_{m}}{r_{p}} \right).$

After determining a modified step command block that compensates for missed motor steps, the motor control process 800 continues by commanding or otherwise signaling the motor driver module to operate the motor in a manner intended to produce the number of motor steps in the modified step command block with the updated PWM width setting (task 808). For example, as described above, if the preceding step command block of ten motor steps resulted in two missed motor steps when executed at a PWM width setting of 30%, and the motor control module 702 determines that the PWM width setting should be increased to 35%, the motor control module 702 configures the PWM module 704 to implement a 35% duty cycle while commanding the motor driver module 706 to execute a step command block of twelve motor steps to compensate for the missed motor steps of the previous step command block. While the motor driver module 706 is implementing the modified step command block, the pulse-width modulated voltage oscillates between the supply voltage for 35% of the PWM period and the ground voltage for 65% of the PWM period, rather than oscillating between the supply voltage for 30% of the PWM period and the ground voltage for 70% of the PWM period as was done during the preceding step command block. As described above, the motor control module 702 determines an expected displacement of the rotor of the motor 708 after execution of the modified step command block, obtains a measured displacement of the rotor of the motor 708 after execution of the modified step command block, and determines whether the motor 708 achieved the commanded number of motor steps based on the measured displacement (tasks 810, 812, 814). If the motor 708 did not achieve the number of motor steps commanded during the modified step command block with the updated PWM width setting, the motor control module 702 further increases the PWM width setting for the PWM module and modifies a subsequent step command block to compensate for the missed motor steps during the modified step command block (tasks 816, 818, 820, 822), as described above.

Still referring to FIG. 8, in response to determining that the motor achieved the commanded amount of rotation (e.g., the commanded number of motor steps in a step command block), the motor control process 800 continues by determining whether the duty cycle for the PWM module should be decreased (task 824). In this regard, the duty cycle setting is decreased after the duty cycle has remained unchanged (or constant) and achieved the commanded number of motor steps over a particular amount of time and/or achieved a particular number of commanded motor steps. In some embodiments, the motor control module 702 may store or otherwise maintain a timestamp corresponding to the most recent increase in the PWM width setting and determine that the PWM width setting should be decreased when more than a threshold amount of time has elapsed since the most recent increase in the PWM width setting. For example, the threshold amount of time may be twelve hours, wherein the motor control module 702 obtains a current time and determines the PWM width setting should be decreased when the current time is more than twelve hours after the most recent increase in the duty cycle implemented by the PWM module 704. In other embodiments, the motor control module 702 may count or otherwise monitor a cumulative number of motor steps executed by the motor 708 since the most recent increase in the PWM width setting and determine that the PWM width setting should be decreased when the cumulative number of motor steps executed by the motor 708 since the most recent increase in the duty cycle exceeds a threshold number of motor steps. For example, if the threshold number of motor steps is one thousand motor steps, the motor control module 702 determines the PWM width setting should be decreased when the motor 708 successfully completes one thousand motor steps with a constant duty cycle.

In response to determining the PWM width setting should be decreased, the motor control process 800 continues by decreasing the duty cycle setting for the PWM module (task 826). In some embodiments, the motor control module 702 may decrease the PWM width setting of the PWM module 704 by a fixed amount (e.g., a fixed percentage or a certain percentage of the current duty cycle). In other embodiments, the motor control module 702 may store a previous duty cycle prior to increasing the duty cycle setting, wherein the motor control module 702 decreases the PWM width setting to that previous duty cycle. For example, if the PWM width setting was at a 30% duty cycle prior to increasing to 35%, and the motor 708 has achieved the commanded number of motor steps over a particular amount of time and/or achieved a particular number of commanded motor steps with the 35% duty cycle, the motor control module 702 may revert the PWM width setting of the PWM module 704 back to the 30% duty cycle for subsequent step command blocks.

In an exemplary embodiment, the motor control process 800 continues by determining whether the entire motor command has been completed (task 828). In this regard, the motor control module 702 verifies or otherwise determines whether the rotor of the motor 708 has rotated by the total number of motor steps corresponding to the dose (or bolus) of fluid to be provided to the user. When the motor 708 has not achieved the total number of motor steps corresponding to the desired dosage, the motor control module 702 continues operating the PWM module 704 and the motor driver module 706 until the motor 708 achieves the desired number of motor steps. For example, if not all of the step command blocks corresponding to the motor command have been executed, the motor control module 702 commands or otherwise operates the motor driver module 706 in accordance with the next step command block (task 808), as described above. Once the motor control module 702 determines that the motor 708 has achieved the desired number of motor steps to provide the desired dose of fluid to the user, in an exemplary embodiment, the motor control module 702 turns off the motor driver module 706 until receiving a subsequent motor command.

In response to a subsequent motor command from the pump control module 720 (task 804), the motor control module 702 repeats the steps of operating the motor driver module 706 and dynamically increasing and/or decreasing the PWM width setting of the PWM module 704 based on whether or not the motor 708 achieves a commanded number of motor steps, as described above. The motor 708 consumes power from the energy source 730 only during the times when the pulse-width modulated voltage output of the PWM module 704 is equal to the supply voltage provided by the energy source 730, and thus, by dynamically adjusting the PWM width setting, the power consumed by the motor 708 to achieve a desired number of motor steps may be reduced by keeping the duty cycle setting for the PWM module 704 relatively low and increasing the duty cycle on an as needed basis. As described in greater detail below, in exemplary embodiments, the motor control module 702 monitors the duty cycles provided by the PWM module 704 during operation of the motor control system 700 and detects or otherwise identifies anomalies in the motor control system 700 based on changes to the duty cycle provided by the PWM module 704 that are indicative of an anomalous condition, such as, for example, a degradation condition in the motor 708 and/or the gear assembly 740 or an occlusion condition in a fluid path from the fluid reservoir. In response to identifying an anomalous condition, the motor control module 702 generates a notification that is provided to the pump control module 720 or another supervisory system, which, in turns, notifies the user or initiates remedial action to address the potential anomaly.

FIG. 9 depicts an exemplary occlusion detection process 900 suitable for implementation by a motor control system 700 to detect an occlusion in a fluid path while delivering fluid to a user using closed-loop dynamic PWM control in accordance with the motor control process 800 of FIG. 8. The various tasks performed in connection with the occlusion detection process 900 may be performed by software, hardware, firmware, or any combination thereof. For illustrative purposes, the following description refers to elements mentioned above in connection with FIG. 7. In practice, portions of the occlusion detection process 900 may be performed by different elements of the motor control system 700, such as, for example, the motor control module 702. It should be appreciated that the occlusion detection process 900 may include any number of additional or alternative tasks, the tasks need not be performed in the illustrated order and/or the tasks may be performed concurrently, and/or the occlusion detection process 900 may be incorporated into a more comprehensive procedure or process having additional functionality not described in detail herein. Moreover, one or more of the tasks shown and described in the context of FIG. 9 could be omitted from a practical embodiment of the occlusion detection process 900 as long as the intended overall functionality remains intact.

In an exemplary embodiment, the occlusion detection process 900 characterizes the PWM width settings of the PWM module for an occlusion in the fluid path by determining a reference value for a duty cycle metric that is indicative of an occlusion in the fluid path (task 902). In this regard, the reference value for the duty cycle metric is representative of the changes to the duty cycle setting of the PWM module 704 that are likely to be exhibited by the motor control system 700 in response to an occlusion in the fluid delivery path that slows, prevents, or otherwise degrades fluid delivery from the reservoir to a user's body while the motor 708 is operated in accordance with the motor control process 800. In this regard, an occlusion in the fluid path increases the force opposing displacement of the stopper 750, which, in turn, will increase the amount of torque required to rotate the rotor of the motor 708 by a motor step. Depending on the embodiment, the duty cycle metric may be a rate of change (or derivative) of the PWM width setting over a preceding time interval, a moving average of the PWM width setting over a preceding time interval, a sequence of PWM width settings over a preceding time interval, a threshold PWM width value, a matched filter applied to a sequence of PWM width settings over a preceding time interval, or some other metric representative of an occlusion in the fluid path while operating the motor 708 in accordance with the motor control process 800.

In one embodiment, the reference value may be determined by creating or otherwise simulating an occlusion in the fluid path and operating the motor 708 in accordance with the motor control process 800 prior to providing the infusion pump to a user. For example, a component having a known occlusion (e.g., an occluded reservoir, needle, tubing, or the like) may be provided to the infusion pump to create a reference occlusion in the fluid path, and while the reference occlusion exists, the pump control module 720 signals, instructs, or otherwise commands the motor control module 702 to perform a calibration routine by operating the motor 708 for a particular number of motor steps in accordance with the motor control process 800 and monitoring the PWM width settings. In accordance with one embodiment, the number of motor steps used for the calibration routine is greater than the amount of motor steps that are achievable with the reference occlusion in the fluid path. As described above in the context of FIG. 8, the motor control module 702 operates the motor driver module 706 and increases the PWM width settings of the PWM module 704 based on the measured displacement of the motor 708. For example, the motor control module 702 may operate the motor driver module 706 to produce a number of motor steps (e.g., ten motor steps) with the initial PWM width setting, wherein the resistance provided by the reference occlusion prevents the motor 708 and results in an increase in the PWM width setting. As described above, the motor control module 702 may calculate the amount of increase for the PWM width setting based on the difference between the expected displacement and the measured displacement of the motor 708. Thus, when the reference occlusion substantially prevents displacement of the stopper 750 (and thereby prevents rotation of the rotor of the motor 708), the PWM width settings determined by the motor control module 702 may increase at a rate (or by an amount) that is unlikely to occur during normal operation. In exemplary embodiments, the motor control module 702 monitors the PWM width settings determined during execution of the calibration routine and determines the reference value for a duty cycle metric that is indicative of an occlusion based on those PWM width settings (e.g., the amount of change in the PWM width settings during the time interval required to execute the calibration routine, the rate of change or derivative of the PWM width setting during the calibration routine, the sequence of PWM width settings or the sequence of increases to the PWM width settings during the calibration routine, a PWM width settings profile identified for the infusion device using a machine learning algorithm, or the like). After the calibration routine is completed, the reference occlusion is removed before the infusion device is provided to the user.

Still referring to FIG. 9, in an exemplary embodiment, the occlusion detection process 900 continues by operating the motor using dynamic PWM control, obtaining the current PWM width setting for the PWM module, and determining an observed value for the duty cycle metric based on the current PWM width setting and/or previously obtained PWM width settings (tasks 904, 906, 908). In this regard, the motor control module 702 obtains motor commands from the pump control module 720 and operates the motor 708 using dynamic PWM control in accordance with the motor control process 800 of FIG. 8. In an exemplary embodiment, after each step command block executed by the motor driver module 706, the motor control module 702 obtains the current PWM width setting for the PWM module 704 and calculates or otherwise determines an observed value for the duty cycle metric based on the current PWM width setting and/or previously obtained PWM width settings. For example, the motor control module 702 may determine the observed value as an amount of change or rate of change to the PWM width settings over a preceding time interval (e.g., over a preceding time interval equal to the time interval required to execute the calibration routine).

In an exemplary embodiment, the occlusion detection process 900 continues by identifying, detecting, or otherwise determining whether an occlusion condition exists based on the observed value for the duty cycle metric, and in response to detecting an occlusion condition, generating or otherwise providing a notification of the fluid path occlusion (tasks 910, 912). In accordance with one or more embodiments, the motor control module 702 compares the observed value for the duty cycle metric with the reference value indicative of a fluid path occlusion and detects or otherwise identifies an occlusion condition when the observed value meets or exceeds the reference value for the duty cycle metric. For example, if the duty cycle metric is an amount or rate of change to the PWM width setting, the motor control module 702 detects an occlusion condition when the amount or rate of change of the observed PWM width settings is greater than or equal to the amount or rate of change to the PWM width setting during the calibration routine. When the motor control module 702 detects an occlusion condition, the motor control module 702 provides a notification of the fluid path occlusion to the pump control module 720 or another supervisory system or module (e.g., the CCD 106 and/or the computer 108). For example, the motor control module 702 may generate an interrupt signal that is handled by the pump control module 720. In practice, the pump control module 720 and/or the infusion pump may perform other occlusion detection techniques (e.g., using force sensors or the like), wherein the pump control module 720 and/or the infusion pump may utilize the occlusion notification generated by the motor control module 702 to verify, confirm, or otherwise augment the other occlusion detection algorithms and/or techniques performed by the pump control module 720 and/or the infusion pump. In other embodiments, the pump control module 720 and/or the infusion pump may utilize the occlusion notification generated by the motor control module 702 as the sole indicia of a fluid path occlusion when anomalies exist with respect to the other occlusion detection algorithms and/or techniques supported by the infusion device (e.g., damage to other sensors normally relied on for detecting an occlusion). In the absence of a fluid path occlusion, the loop defined by tasks 904, 906, 908 and 910 repeats during operation of the motor 708 in accordance with the motor control process 800 to continuously monitor the PWM width settings of the PWM module 704 for an occlusion condition.

FIG. 10 depicts an exemplary degradation detection process 1000 suitable for implementation by a motor control system 700 to detect wear or degradation in a drive system while delivering fluid to a user using closed-loop dynamic PWM control in accordance with the motor control process 800 of FIG. 8. The various tasks performed in connection with the degradation detection process 1000 may be performed by software, hardware, firmware, or any combination thereof. For illustrative purposes, the following description refers to elements mentioned above in connection with FIG. 7. In practice, portions of the degradation detection process 1000 may be performed by different elements of the motor control system 700, such as, for example, the motor control module 702. It should be appreciated that the degradation detection process 1000 may include any number of additional or alternative tasks, the tasks need not be performed in the illustrated order and/or the tasks may be performed concurrently, and/or the degradation detection process 1000 may be incorporated into a more comprehensive procedure or process having additional functionality not described in detail herein. Moreover, one or more of the tasks shown and described in the context of FIG. 10 could be omitted from a practical embodiment of the degradation detection process 1000 as long as the intended overall functionality remains intact.

In an exemplary embodiment, the degradation detection process 1000 characterizes the drive system by determining a reference value for a duty cycle metric based on the PWM width settings of the PWM module that is indicative of wear or degradation in the drive system (task 1002). The reference value duty cycle metric is representative of the PWM width setting(s) that are likely to be exhibited by the motor control system 700 while the motor 708 is operated in accordance with the motor control process 800 when the motor 708 and/or the gear assembly 740 have experienced sufficient wear or degradation to the point that the motor 708 and/or the gear assembly 740 should be inspected for maintenance, repair and/or replacement. In this regard, reference value is indicates that the motor 708 and/or the gear assembly 740 should be inspected for maintenance, repair and/or replacement. For example, over time, frictional forces in the drive system may accumulate (e.g., due to lubricant wearing out, rust or other surface effects, damage to the motor and/or one or more of the gears, and the like) and increase the force that opposes displacement of the gear assembly 740, the stopper 750 and/or the motor 708, which, in turn, will increase the amount of torque required to rotate the rotor of the motor 708 by a motor step. Thus, the reference value may be a duty cycle that is unlikely to be exceeded (e.g., an 80% duty cycle setting) unless the motor 708 and/or gear assembly 740 has degraded. The duty cycle metric may be a threshold PWM width setting, an average PWM width setting, a sequence of PWM width settings, a matched filter applied to a sequence of PWM width settings over a preceding time interval, or some other metric capable of indicating degradation to the motor 708 and/or the gear assembly 740. For example, the duty cycle metric may be a moving average of the PWM width settings of the PWM module 704 (e.g., an average of the PWM width settings over the previous 24 hours). In this regard, the reference value may be updated or otherwise determined dynamically during operation of the motor control system 700 and/or the infusion device. In some embodiments, the reference value may be the historical duty cycle average over the lifetime of the motor control system 700 and/or the infusion device. For example, the motor control module 702 may continuously obtain the PWM width settings of the PWM module 704 and recalculate the average PWM width setting over the lifetime of the motor control system 700 and/or the infusion pump (e.g., by averaging PWM width settings obtained after each step command block or each motor command), as described in greater detail below.

In an exemplary embodiment, the degradation detection process 1000 continues by operating the motor using dynamic PWM control, obtaining a current duty cycle setting for the PWM module, and determining an observed value for the duty cycle metric based on the current duty cycle setting and/or previously obtained duty cycle settings (tasks 1004, 1006, 1008). As described above, the motor control module 702 obtains motor commands from the pump control module 720 and operates the motor 708 using dynamic PWM control in accordance with the motor control process 800 of FIG. 8. In an exemplary embodiment, after each step command block (or alternatively, after each motor command) executed by the motor driver module 706, the motor control module 702 obtains the current PWM width setting for the PWM module 704 and calculates or otherwise determines an observed value for the duty cycle metric based on the current PWM width setting and/or previously obtained PWM width settings. For example, the motor control module 702 may determine a moving average of the PWM width settings over a preceding time interval (e.g., the previous 24 hours) as the observed value for the duty cycle metric.

In an exemplary embodiment, the degradation detection process 1000 continues by identifying or otherwise determining whether the drive system is exhibiting degradation based on the observed value for the duty cycle metric, and in response to detecting a degradation condition, generating or otherwise providing a notification of the degradation condition (tasks 1010, 1012). The motor control module 702 identifies a degradation condition by comparing the observed value for the duty cycle metric with the reference value indicative of a degradation condition and detecting when the observed value meets or exceeds the reference value. For example, if the reference value is an 80% duty cycle, the motor control module 702 detects a degradation condition when the observed value (e.g., the current PWM width setting of the PWM module 704 or an average of the current and previous PWM width settings) exceeds 80%. Thus, when the duty cycle metric is a moving average of the PWM width settings over a preceding time interval (e.g., the previous 24 hours), the motor control module 702 identifies a degradation condition when the moving average of the PWM width setting exceeds the 80% duty cycle reference value. In some embodiments, the motor control module 702 identifies a degradation condition when the observed value exceeds the reference value by some threshold amount, such as a fixed amount (e.g., a fixed duty cycle percentage) or a fixed percentage of the reference value. In this regard, if the reference value is the average PWM width setting over the lifetime of the motor control system 700 and/or the infusion device, the motor control module 702 may identify a degradation condition when a moving average of the PWM width settings over a shorter time interval exceeds the reference value by more than a threshold percentage of the reference value. For example, if the average PWM width setting over the lifetime of the motor control system 700 corresponds to 50% duty cycle, the motor control module 702 may identify a degradation condition when an average of the PWM width settings over the preceding 24 hours exceeds the reference value by more than fifty percent of the reference value, that is, when the average of the PWM width settings over the preceding 24 hours exceeds a 75% duty cycle. Alternatively, the motor control module 702 may identify a degradation condition when an average of the PWM width settings over the preceding time interval exceeds the reference value by a fixed amount (e.g., a 20% difference in duty cycle).

When the motor control module 702 detects or otherwise identifies a degradation condition, the motor control module 702 provides a notification of the potential degradation to the pump control module 720 or another supervisory system or module. For example, the motor control module 702 may generate an interrupt signal that is handled by the pump control module 720 or another supervisory system, which, in turn, generates an audio and/or visual alert to the user that the drive system should be inspected. In the absence of a degradation condition, the loop defined by tasks 1004, 1006, 1008 and 1010 repeats during operation of the motor 708 in accordance with the motor control process 800 to continuously monitor the PWM width settings of the PWM module 704 for degradation in the drive system.

Referring to FIGS. 7-10, in accordance with one or more embodiments, the motor control process 800, the occlusion detection process 900, and the degradation detection process 1000 are performed by the motor control system 700 concurrently. For example, as described above in the context of FIG. 8, the motor control module 702 may receive motor commands from the pump control module 720 and operate the motor 708 via the PWM module 704 and the motor driver module 706 using closed-loop dynamic PWM control to vary or otherwise adjust the PWM width setting of the PWM module 704 (i.e., the duty cycle of the pulse-width modulated voltage output of the PWM module 704) to achieve the desired rotation of the motor 708, and, in turn, achieve a desired dosage of fluid to the user by displacing the stopper 750 by the desired amount via the gear assembly 740. While operating the motor 708 in accordance with the motor control process 800, the motor control module 702 may obtain the current PWM width settings for the PWM module 704 and determine observed values for the duty cycle metrics used for detecting an occlusion condition or a degradation condition. In this regard, when the PWM width settings for the PWM module 704 rapidly increase or otherwise vary by a certain amount over a relative short period of time in a manner that is characteristic of an occlusion condition, the motor control module 702 detects the occlusion condition and generates a notification of the potential fluid path occlusion, as described above in the context of occlusion detection process 900. In other situations, when the average PWM width settings for the PWM module 704 gradually increase over a longer period of time and exceed a reference value that is characteristic of a degradation condition, the motor control module 702 detects the degradation condition and generates a notification of the potential drive system degradation, as described above in the context of degradation detection process 1000. In this regard, the motor control module 702 may operate the motor 708 using dynamic PWM control to reduce the amount of power consumed by the motor 708 while concurrently monitoring the PWM width settings to identify potential fluid path occlusions or drive system degradation that may impair operation of the infusion pump.

The foregoing description may refer to elements or nodes or features being “connected” or “coupled” together. As used herein, unless expressly stated otherwise, “coupled” means that one element/node/feature is directly or indirectly joined to (or directly or indirectly communicates with) another element/node/feature, and not necessarily mechanically. In addition, certain terminology may also be used in the herein for the purpose of reference only, and thus is not intended to be limiting. For example, terms such as “first”, “second”, and other such numerical terms referring to structures do not imply a sequence or order unless clearly indicated by the context.

While at least one exemplary embodiment has been presented in the foregoing detailed description, it should be appreciated that a vast number of variations exist. It should also be appreciated that the exemplary embodiment or embodiments described herein are not intended to limit the scope, applicability, or configuration of the claimed subject matter in any way. For example, the subject matter described herein is not limited to the infusion devices and related systems described herein. Moreover, the foregoing detailed description will provide those skilled in the art with a convenient road map for implementing the described embodiment or embodiments. It should be understood that various changes can be made in the function and arrangement of elements without departing from the scope defined by the claims, which includes known equivalents and foreseeable equivalents at the time of filing this patent application. 

What is claimed is:
 1. A method of controlling a motor, the method comprising: applying a modulated voltage to the motor to produce a commanded rotation of a rotor of the motor; determining an expected displacement based on the commanded rotation; obtaining a measured displacement influenced by rotation of the rotor in response to applying the modulated voltage to the motor to produce the commanded rotation; and adjusting a duty cycle of the modulated voltage in response to a difference between the expected displacement and the measured displacement.
 2. The method of claim 1, wherein adjusting the duty cycle comprises increasing the duty cycle based on the difference between the expected displacement and the measured displacement.
 3. The method of claim 2, further comprising operating the motor to compensate for the difference between the expected displacement and the measured displacement while the modulated voltage having the increased duty cycle is applied to the motor.
 4. The method of claim 2, wherein increasing the duty cycle comprises calculating an amount by which the duty cycle should be increased based on the difference between the expected displacement and the measured displacement.
 5. The method of claim 2, further comprising decreasing the duty cycle of the modulated voltage after increasing the duty cycle.
 6. The method of claim 1, further comprising operating the motor to compensate for the difference between the expected displacement and the measured displacement after adjusting the duty cycle.
 7. The method of claim 1, further comprising decreasing the duty cycle of the modulated voltage when the measured displacement corresponds to the expected displacement.
 8. The method of claim 1, wherein obtaining the measured displacement comprises obtaining a measured number of incremental rotations of the rotor using an incremental position sensor.
 9. The method of claim 8, wherein determining the expected displacement comprises determining an expected number of incremental rotations expected to be detected by the incremental position sensor in response to applying the modulated voltage to the motor to produce the commanded rotation.
 10. The method of claim 1, the motor comprising a stepper motor and the commanded rotation comprising a commanded number of motor steps, wherein determining the expected displacement comprises determining an expected number of incremental rotations expected to be detected by an incremental position sensor coupled to the stepper motor in response to applying the modulated voltage to the motor to produce the commanded number of motor steps.
 11. The method of claim 10, the incremental position sensor detecting a first number of incremental rotations per revolution of the rotor and the stepper motor having a second number of motor steps per revolution of the rotor, wherein determining the expected number comprises multiplying the commanded number by a ratio of the first number to the second number.
 12. The method of claim 10, wherein obtaining the measured displacement comprises obtaining a measured number of incremental rotations of the rotor using the incremental position sensor.
 13. The method of claim 12, further comprising: determining a number of missed motor steps based on a difference between the expected number of incremental rotations and the measured number of incremental rotations; and after adjusting the duty cycle, applying the modulated voltage having the adjusted duty cycle to the motor to compensate for the number of missed motor steps.
 14. The method of claim 1, adjusting the duty cycle resulting in the modulated voltage having an adjusted duty cycle, wherein the method further comprises applying the modulated voltage having the adjusted duty cycle to the motor to compensate for the difference between the expected displacement and the measured displacement.
 15. The method of claim 1, further comprising identifying an anomalous condition based on the duty cycle.
 16. The method of claim 1, further comprising determining a minimum duty cycle capable of rotating the rotor of the motor, wherein applying the modulated voltage comprises applying the modulated voltage having the minimum duty cycle to the motor to produce the commanded rotation of the rotor.
 17. The method of claim 1, further comprising converting a commanded displacement of a stopper coupled to the rotor to the commanded rotation.
 18. The method of claim 1, wherein adjusting the duty cycle comprises adjusting the duty cycle when the difference between the expected displacement and the measured displacement exceeds a threshold value.
 19. A method of controlling a motor, the method comprising: applying a modulated voltage to the motor to produce a commanded rotation of a rotor of the motor, the modulated voltage having a duty cycle, the modulated voltage oscillating between a first voltage and a second voltage, the modulated voltage being equal to the first voltage for a percentage of a time interval corresponding to the duty cycle; determining an expected displacement based on the commanded rotation; obtaining a measured displacement influenced by rotation of the rotor in response to applying the modulated voltage to the motor to produce the commanded rotation; and adjusting the duty cycle of the modulated voltage in response to a difference between the expected displacement and the measured displacement.
 20. A method of controlling a stepper motor, the method comprising: applying a modulated voltage to the stepper motor to produce a commanded number of motor steps of rotation of a rotor of the stepper motor, the modulated voltage having a duty cycle, the modulated voltage oscillating between a first voltage and a second voltage, the modulated voltage being equal to the first voltage for a percentage of a time interval corresponding to the duty cycle; determining an expected number of incremental rotations expected to be detected by a sensor coupled to the stepper motor in response to applying the modulated voltage to the stepper motor to produce the commanded number of motor steps based on the commanded number of motor steps; obtaining a measured number of incremental rotations of the rotor from the sensor in response to applying the modulated voltage to the stepper motor to produce the commanded number of motor steps; and adjusting the duty cycle of the modulated voltage in response to a difference between the expected number and the measured number. 